/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Persistencia.DAOS;

import Controladores.CtrlCrearGrupo;
import DataTypes.DataGrupo;
import Interfaces.Factory;
import Interfaces.ICrearGrupo;
import com.csvreader.CsvReader;
import com.csvreader.CsvWriter;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Iterator;

/**
 *
 * @author Usuario
 */
public class DAOGrupos {
    
    
    public void guardarGrupos(String pathDirect) {
        
           String ruta = (pathDirect+"\\grupos.csv");
        ICrearGrupo gru = new CtrlCrearGrupo();
        
        ArrayList<DataGrupo> listU = gru.listarGrupos();
        
        CsvWriter writer = new CsvWriter(ruta);

        try {
//writer.write(String) - Escribe los campos separandolos con coma automaticamente.
            writer.write("nombre");
            writer.write("descripcion");
            writer.write("canParticipantes");
            writer.write("creador");
            writer.write("imagen");
            writer.write("fechaCreacion");
            writer.write("moderadores");
            writer.write("participantes");
            
//writer.endRecord() - Termina con la linea.

            ArrayList<String> arr;
            int i;
            Iterator<DataGrupo> it = listU.iterator();
            DataGrupo da;
            while (it.hasNext()) {
                da = it.next();
                writer.endRecord();
                writer.write(da.getNombre());
                writer.write(da.getDesc());
                writer.write(String.valueOf(da.getCantParticipantes()));
                writer.write(da.getCreador());
                writer.write(da.getImg());
                writer.write(da.getFechaCreacion().getTime().toString());
                arr = da.getModeradores();
                i = arr.size();

                Iterator<String> itarr = arr.iterator();
                String cad = "";
                while (itarr.hasNext()) {
                    cad = cad.concat(itarr.next() + ";");
                }
                writer.write(cad);

                arr = da.getParticipantes();
                itarr = arr.iterator();
                String cad2 = "";
                while (itarr.hasNext()) {
                    cad2 = cad2.concat(itarr.next() + ";");
                }
                writer.write(cad2);

            }

        } catch (IOException e) {

// TODO Auto-generated catch block

            e.printStackTrace();

        } finally {

            writer.close();

        }
        
    }
    
    
    public void cargarGrupos(String path){
        
        String ruta = path+"\\grupos.csv";
        ICrearGrupo iGrup = Factory.getInstance().getCrearGrupos();
        try {
            CsvReader grup = new CsvReader(new InputStreamReader(new FileInputStream(ruta), "UTF-8"));


            grup.readHeaders();
            
            while (grup.readRecord()) {
                String nombre = grup.get("nombre");
                String desc = grup.get("descripcion");
                String canpart = grup.get("canParticipantes");
                String creador = grup.get("creador");
                String img = grup.get("imagen");
                String fechCre = grup.get("fechaCreacion");
                String mod = grup.get("moderadores");
                String part = grup.get("participantes");

                // perform program logic here
                DataGrupo dt = new DataGrupo();
                dt.setNombre(nombre);
                dt.setCantParticipantes(Integer.parseInt(canpart));
                dt.setCreador(creador);
                dt.setDesc(desc);
                dt.setFechaCreacion(Factory.getInstance().getRelojSistema().getTime());
                dt.setImg(img);
                
                ArrayList<String> moderadores = new ArrayList<String>();
                ArrayList<String> participantes = new ArrayList<String>();

                if (!mod.isEmpty()) {
                    String res[] = mod.split(";");
                    int i = res.length;
                    while (i != 0) {
                        moderadores.add(res[i - 1]);
                        i--;
                    }
                    dt.setModeradores(moderadores);
                }
                if (!part.isEmpty()) {
                    String resPart[] = part.split(";");
                    int a = resPart.length;
                    while (a != 0) {
                        participantes.add(resPart[a - 1]);
                        a--;
                    }
                    dt.setParticipantes(participantes);
                }
                iGrup.crearGrupo(dt);

            }

            grup.close();

        
        } catch (IOException ex) {
            System.out.println(ex.getMessage());
        }
        
        
    }
    
   
    
    
    
    
    
}
